package com.kakame.codenews.base.web.fast.mapping.common;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.kakame.codenews.base.util.SystemUtil;
import com.kakame.codenews.base.web.annotation.ColumnMapping;
import com.kakame.codenews.base.web.annotation.TableMapping;

/**
 * 
 * @author 何家明  2018年08月02日 13:21:15
 */
@TableMapping("t_common_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @ColumnMapping(column = "id")
    private String id;

    @ColumnMapping(column = "user_name")
    private String userName;

    @ColumnMapping(column = "user_account")
    private String userAccount;

    @ColumnMapping(column = "user_pwd")
    private String userPwd;

    @ColumnMapping(column = "user_salt")
    private String userSalt;

    @ColumnMapping(column = "user_birth")
    private Date userBirth;

    @ColumnMapping(column = "user_gender")
    private String userGender;

    @ColumnMapping(column = "user_email")
    private String userEmail;

    @ColumnMapping(column = "user_phone")
    private String userPhone;

    @ColumnMapping(column = "user_exp")
    private Integer userExp;

    @ColumnMapping(column = "user_vip")
    private Integer userVip;

    @ColumnMapping(column = "user_money")
    private BigDecimal userMoney;

    @ColumnMapping(column = "user_large_icon")
    private String userLargeIcon;

    @ColumnMapping(column = "user_small_icon")
    private String userSmallIcon;

    @ColumnMapping(column = "user_status")
    private String userStatus;

    @ColumnMapping(column = "create_time")
    private Date createTime;

    @ColumnMapping(column = "create_user_id")
    private String createUserId;

    @ColumnMapping(column = "update_time")
    private Date updateTime;

    @ColumnMapping(column = "update_user_id")
    private String updateUserId;

    @ColumnMapping(column = "status")
    private String status;


    public User() {
    }
    public User(Builder builder) {
        this.id = builder.id;
        this.userName = builder.userName;
        this.userAccount = builder.userAccount;
        this.userPwd = builder.userPwd;
        this.userSalt = builder.userSalt;
        this.userBirth = builder.userBirth;
        this.userGender = builder.userGender;
        this.userEmail = builder.userEmail;
        this.userPhone = builder.userPhone;
        this.userExp = builder.userExp;
        this.userVip = builder.userVip;
        this.userMoney = builder.userMoney;
        this.userLargeIcon = builder.userLargeIcon;
        this.userSmallIcon = builder.userSmallIcon;
        this.userStatus = builder.userStatus;
        this.createTime = builder.createTime;
        this.createUserId = builder.createUserId;
        this.updateTime = builder.updateTime;
        this.updateUserId = builder.updateUserId;
        this.status = builder.status;
    }
	public static Builder create() {
		return new Builder();
	}

	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getId() {
		return id;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param id
	 */
    public void setId(String id) {
		this.id = id;
	}
	/**
	 * 用户名
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserName() {
		return userName;
	}
    /**
	 * 用户名
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userName
	 */
    public void setUserName(String userName) {
		this.userName = userName;
	}
	/**
	 * 用户账号
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserAccount() {
		return userAccount;
	}
    /**
	 * 用户账号
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userAccount
	 */
    public void setUserAccount(String userAccount) {
		this.userAccount = userAccount;
	}
	/**
	 * 用户密码
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserPwd() {
		return userPwd;
	}
    /**
	 * 用户密码
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userPwd
	 */
    public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	/**
	 * 盐值
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserSalt() {
		return userSalt;
	}
    /**
	 * 盐值
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userSalt
	 */
    public void setUserSalt(String userSalt) {
		this.userSalt = userSalt;
	}
	/**
	 * 用户出生日期
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getUserBirth() {
		return userBirth;
	}
    /**
	 * 用户出生日期
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userBirth
	 */
    public void setUserBirth(Date userBirth) {
		this.userBirth = userBirth;
	}
	/**
	 * 用户性别
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserGender() {
		return userGender;
	}
    /**
	 * 用户性别
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userGender
	 */
    public void setUserGender(String userGender) {
		this.userGender = userGender;
	}
	/**
	 * 用户邮箱
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserEmail() {
		return userEmail;
	}
    /**
	 * 用户邮箱
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userEmail
	 */
    public void setUserEmail(String userEmail) {
		this.userEmail = userEmail;
	}
	/**
	 * 用户手机号
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserPhone() {
		return userPhone;
	}
    /**
	 * 用户手机号
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userPhone
	 */
    public void setUserPhone(String userPhone) {
		this.userPhone = userPhone;
	}
	/**
	 * 用户经验值
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Integer getUserExp() {
		return userExp;
	}
    /**
	 * 用户经验值
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userExp
	 */
    public void setUserExp(Integer userExp) {
		this.userExp = userExp;
	}
	/**
	 * 用户vip等级
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Integer getUserVip() {
		return userVip;
	}
    /**
	 * 用户vip等级
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userVip
	 */
    public void setUserVip(Integer userVip) {
		this.userVip = userVip;
	}
	/**
	 * 用户可用余额
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public BigDecimal getUserMoney() {
		return userMoney;
	}
    /**
	 * 用户可用余额
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userMoney
	 */
    public void setUserMoney(BigDecimal userMoney) {
		this.userMoney = userMoney;
	}
	/**
	 * 用户大头像地址
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserLargeIcon() {
		return userLargeIcon;
	}
    /**
	 * 用户大头像地址
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userLargeIcon
	 */
    public void setUserLargeIcon(String userLargeIcon) {
		this.userLargeIcon = userLargeIcon;
	}
	/**
	 * 用户小头像地址
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserSmallIcon() {
		return userSmallIcon;
	}
    /**
	 * 用户小头像地址
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userSmallIcon
	 */
    public void setUserSmallIcon(String userSmallIcon) {
		this.userSmallIcon = userSmallIcon;
	}
	/**
	 * 用户状态
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUserStatus() {
		return userStatus;
	}
    /**
	 * 用户状态
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param userStatus
	 */
    public void setUserStatus(String userStatus) {
		this.userStatus = userStatus;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getCreateTime() {
		return createTime;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param createTime
	 */
    public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getCreateUserId() {
		return createUserId;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param createUserId
	 */
    public void setCreateUserId(String createUserId) {
		this.createUserId = createUserId;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getUpdateTime() {
		return updateTime;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param updateTime
	 */
    public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUpdateUserId() {
		return updateUserId;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param updateUserId
	 */
    public void setUpdateUserId(String updateUserId) {
		this.updateUserId = updateUserId;
	}
	/**
	 * 数据状态 C 正常 D 删除
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getStatus() {
		return status;
	}
    /**
	 * 数据状态 C 正常 D 删除
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param status
	 */
    public void setStatus(String status) {
		this.status = status;
	}

    @Override
	public String toString() {
		return "User [id=" + id + ", userName=" + userName + ", userAccount=" + userAccount + ", userPwd=" + userPwd + ", userSalt=" + userSalt + ", userBirth=" + userBirth + ", userGender=" + userGender + ", userEmail=" + userEmail + ", userPhone=" + userPhone + ", userExp=" + userExp + ", userVip=" + userVip + ", userMoney=" + userMoney + ", userLargeIcon=" + userLargeIcon + ", userSmallIcon=" + userSmallIcon + ", userStatus=" + userStatus + ", createTime=" + createTime + ", createUserId=" + createUserId + ", updateTime=" + updateTime + ", updateUserId=" + updateUserId + ", status=" + status + "]";
	}
    public static class Builder {
        private String id;
        private String userName;
        private String userAccount;
        private String userPwd;
        private String userSalt;
        private Date userBirth;
        private String userGender;
        private String userEmail;
        private String userPhone;
        private Integer userExp;
        private Integer userVip;
        private BigDecimal userMoney;
        private String userLargeIcon;
        private String userSmallIcon;
        private String userStatus;
        private Date createTime;
        private String createUserId;
        private Date updateTime;
        private String updateUserId;
        private String status;
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param id
	     */
        public Builder id(String id) {
	    	this.id = id;
	        return this;
    	}
        /**
	     * 用户名
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userName
	     */
        public Builder userName(String userName) {
	    	this.userName = userName;
	        return this;
    	}
        /**
	     * 用户账号
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userAccount
	     */
        public Builder userAccount(String userAccount) {
	    	this.userAccount = userAccount;
	        return this;
    	}
        /**
	     * 用户密码
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userPwd
	     */
        public Builder userPwd(String userPwd) {
	    	this.userPwd = userPwd;
	        return this;
    	}
        /**
	     * 盐值
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userSalt
	     */
        public Builder userSalt(String userSalt) {
	    	this.userSalt = userSalt;
	        return this;
    	}
        /**
	     * 用户出生日期
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userBirth
	     */
        public Builder userBirth(Date userBirth) {
	    	this.userBirth = userBirth;
	        return this;
    	}
        /**
	     * 用户性别
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userGender
	     */
        public Builder userGender(String userGender) {
	    	this.userGender = userGender;
	        return this;
    	}
        /**
	     * 用户邮箱
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userEmail
	     */
        public Builder userEmail(String userEmail) {
	    	this.userEmail = userEmail;
	        return this;
    	}
        /**
	     * 用户手机号
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userPhone
	     */
        public Builder userPhone(String userPhone) {
	    	this.userPhone = userPhone;
	        return this;
    	}
        /**
	     * 用户经验值
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userExp
	     */
        public Builder userExp(Integer userExp) {
	    	this.userExp = userExp;
	        return this;
    	}
        /**
	     * 用户vip等级
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userVip
	     */
        public Builder userVip(Integer userVip) {
	    	this.userVip = userVip;
	        return this;
    	}
        /**
	     * 用户可用余额
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userMoney
	     */
        public Builder userMoney(BigDecimal userMoney) {
	    	this.userMoney = userMoney;
	        return this;
    	}
        /**
	     * 用户大头像地址
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userLargeIcon
	     */
        public Builder userLargeIcon(String userLargeIcon) {
	    	this.userLargeIcon = userLargeIcon;
	        return this;
    	}
        /**
	     * 用户小头像地址
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userSmallIcon
	     */
        public Builder userSmallIcon(String userSmallIcon) {
	    	this.userSmallIcon = userSmallIcon;
	        return this;
    	}
        /**
	     * 用户状态
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param userStatus
	     */
        public Builder userStatus(String userStatus) {
	    	this.userStatus = userStatus;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param createTime
	     */
        public Builder createTime(Date createTime) {
	    	this.createTime = createTime;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param createUserId
	     */
        public Builder createUserId(String createUserId) {
	    	this.createUserId = createUserId;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param updateTime
	     */
        public Builder updateTime(Date updateTime) {
	    	this.updateTime = updateTime;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param updateUserId
	     */
        public Builder updateUserId(String updateUserId) {
	    	this.updateUserId = updateUserId;
	        return this;
    	}
        /**
	     * 数据状态 C 正常 D 删除
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param status
	     */
        public Builder status(String status) {
	    	this.status = status;
	        return this;
    	}

        public User build() {
			return new User(this);
		}
	}






    // ******************* 扩展 *******************//
    public Integer getUserLevel() {
        return SystemUtil.generateUserLevel(userExp);
    }

}
